const db = require("../db/index");
const bcrypt = require("bcryptjs");
// 获取用户信息 包含username和user_pic  如果user_pic为空的话 就返回默认图片 
exports.getUserInfo = (req, res) => {
  const SQLstr =
        "SELECT username,user_pic FROM ev_users WHERE id=?";
    // 使用req.user.id获取当前登录用户的ID  user是在登录成功后，通过中间件解析token获取到的当前登录用户的信息
  db.query(SQLstr, req.user.id, (err, results) => {
      if (err){
        return res.send({ status: 500, data: { message: "获取用户信息失败" } });
      }
      if (results.length !== 1) {
        return res.send({ status: 500, data: { message: "获取用户信息失败" } });
      }
      
      // 如果user_pic为空，设置默认头像
      const userInfo = results[0];
      if (!userInfo.user_pic) {
        userInfo.user_pic = "/avatar/default.png";
      }
      
      res.send({
        status: 200,
        data: { message: "获取用户信息成功", userInfo },
      });
  });
};
// 更新用户名
exports.updateUsername = (req, res) => {
    const userinfo = req.body;
    
    // 首先检查用户名是否已存在
    const checkSQL = "SELECT id FROM ev_users WHERE username = ? AND id != ?";
    db.query(checkSQL, [userinfo.username, req.user.id], (err, results) => {
        if (err) {
            return res.send({ status: 500, data: { message: "检查用户名失败" } });
        }
        if (results.length > 0) {
            return res.send({ status: 400, data: { message: "用户名已存在，请选择其他用户名" } });
        }
        
        // 用户名可用，执行更新
        const updateSQL = "UPDATE ev_users SET username = ? WHERE id = ?";
        db.query(updateSQL, [userinfo.username, req.user.id], (err, results) => {
            if (err) {
                return res.send({ status: 500, data: { message: "更新用户名失败" } });
            }
            if (results.affectedRows !== 1) {
                return res.send({ status: 500, data: { message: "更新用户名失败" } });
            }
            res.send({
                status: 200,
                data: { message: "更新用户名成功" },
            });
        });
    });
}

// 重置密码
exports.resetPassword = (req, res) => {
  const body = req.body;
  if (body.password === body.newPassword) {
    return res.cc("新密码和旧密码不能相同");
  }

  const SQLstr1=
    "SELECT password FROM ev_users WHERE id=?";
  db.query(SQLstr1,req.user.id,(err,results)=>{
    if (err){
      return res.cc(err);
    }
    if (results.length !== 1) {
      return res.cc("用户不存在");
    }
    if (!bcrypt.compareSync(body.password, results[0].password)) {
      return res.cc("旧密码错误");
    }
    
    // 验证通过后，执行密码更新
    const newPasswordHash = bcrypt.hashSync(body.newPassword, 10);
    const SQLstr2=
      "UPDATE ev_users SET password=? WHERE id=?";
    db.query(SQLstr2,[newPasswordHash,req.user.id],(err,results)=>{
      if (err){
        return res.cc(err);
      }
      if (results.affectedRows !== 1) {
        return res.cc("重置密码失败");
      }
      res.send({
        status: 200,
        data: { message: "重置密码成功" },
      });
    })
  })
}



